// (1)获取 打包 目录
import * as fs from 'fs';
import { execa } from 'execa'
// 获取目录，注意只打包packages下边的文件夹
const dirs = fs.readdirSync('packages').filter(p => {
    // 判断是否是文件,只打包文件夹
    if (!fs.statSync(`packages/${p}`).isDirectory()) {
        return false
    }
    return true
})
// (2)进行打包 并行打包
async function build(target) {
    // execa第一个参数是打包的形式，第二个是一个数组
    // -c 执行rullup配置，环境变量
    await execa('rollup', ['-c', '--environment', `TARGET:${target}`], { stdio: "inherit" })//子进程的输出在父进程里边出现
}

async function runParaller(dirs, itemfn) {
    // 遍历所有包
    let result = []
    for (let item of dirs) {
        result.push(itemfn(item))
    }
    return Promise.all(result)//存放打包的promise,等待这里的打包执行完毕之后，调用成功
}
runParaller(dirs, build)
    .then(() => {
        console.log('成功');
    })
    .catch((err) => {
        console.log('错误', err);
    })